# -*- coding: utf-8 -*-

id_map_granty={'kierownik':wez_imie_nazwisko}

@auth.requires_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy])
def dodaj():
	response.tytul_strony='Dodaj grant'
	if request.vars:
		if request.vars.pracownik_dodawanie and session.uczestnicy != None:
			session.uczestnicy.append(request.vars.pracownik_dodawanie)
		if request.vars.pracownik_usuwanie and session.uczestnicy != None:
			session.uczestnicy.remove(request.vars.pracownik_usuwanie)
	else :
		session.uczestnicy=[]
		
	session.pracownicy = []
	for rekord in db(db.pracownicy.id>1).select(db.pracownicy.imie, db.pracownicy.nazwisko):
		if wez_imie_nazwisko(rekord) not in session.uczestnicy:
			session.pracownicy.append(wez_imie_nazwisko(rekord))
	
	form_dodawaj = FORM(SELECT(session.pracownicy, _name='pracownik_dodawanie',), INPUT(_type='submit', _value="dodaj"))
	form_usuwaj = FORM(SELECT(session.uczestnicy, _name='pracownik_usuwanie',), INPUT(_type='submit', _value="usun"))
			
	form2 = ProfessorsSQLFORM(db.granty,modyfikuj_formularz=[mod_form_walidator_a_mniejsze_b('rok_przyznania','rok_zakonczenia')])
	if form2.accepts(request.vars, session):
		for a in set(session.uczestnicy):
			s=a.split()
			pracownik=db(db.pracownicy.imie==s[0] and db.pracownicy.nazwisko==s[1]).select(db.pracownicy.id)
			if len(pracownik)>0:
				id=db.granty_pracownicy.insert(id_grant=form2.vars.id, id_pracownik=pracownik[0].id)
		del session.uczestnicy
		redirect(URL(a="instytut", c="home", f="komunikat", vars={'message': 'Dodano grant'}))
	return dict(form_dodawaj=form_dodawaj,form_usuwaj=form_usuwaj,form2=form2, lista_pracownikow=session.uczestnicy)

@auth.requires_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy])
def usun():
	response.tytul_strony='Usuwanie grantu'
	try:
		record_id=int(request.vars['id'])
	except:
		return "<h1>Invalid url</h1>"
	db(db.granty_pracownicy.id_grant==record_id).delete()
	del db.granty[record_id]
	redirect(URL(a='instytut',c='home',f='komunikat', vars={'message': "Usunięto grant"}))
	
@auth.requires_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy,auth.grupa_pracownik])
def lista():
	response.tytul_strony='Lista grantów'
	if auth.has_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy]):
		bonus=[link_usun, link_modyfikuj]
	else:
		bonus=[]
	linki=[link_pokaz]+bonus
	form=crud.select(db.granty, linki=linki, truncate=20, id_map=id_map_granty)
	return dict(form=form)
	

@auth.requires_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy,auth.grupa_pracownik])
def pokaz():
	response.tytul_strony='Grant'
	try:
		if isinstance(request.vars['id'],list): record_id=int(request.vars['id'][0])
		else: record_id=int(request.vars['id'])
	except:
		return "<h1>Invalid url</h1>"
	if auth.has_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy]):
		is_admin=True
	else:
		is_admin=False
	record=db.granty[record_id]
	if record:
		lista_pracownikow=[]
		for rec in db((db.granty_pracownicy.id_pracownik==db.pracownicy.id) & (db.granty_pracownicy.id_grant==record.id)).select(db.pracownicy.imie,db.pracownicy.nazwisko):
			lista_pracownikow.append(wez_imie_nazwisko(rec))
		return dict(
				form=ProfessorsSQLFORM(db.granty,record,readonly=True,comments=False,showid=0), 
				url_modyfikuj=URL(a='instytut',c='granty',f='modyfikuj?id=%s' % record_id),
				is_admin=is_admin,
				lista_pracownikow=lista_pracownikow)


@auth.requires_any_membership([auth.grupa_administrator,auth.grupa_moderator_instytutowy])				
def modyfikuj():
	response.tytul_strony='Grant'
	try:
		if isinstance(request.vars['id'],list): record_id=int(request.vars['id'][0])
		else: record_id=int(request.vars['id'])
	except:
		return "<h1>Invalid url</h1>"
	record=db.granty[record_id]
	
	if record:
		if len(request.vars)!=1:
			if request.vars.pracownik_dodawanie and session.uczestnicy != None:
				session.uczestnicy.append(request.vars.pracownik_dodawanie)
			if request.vars.pracownik_usuwanie and session.uczestnicy != None:
				session.uczestnicy.remove(request.vars.pracownik_usuwanie)
		else :
			session.uczestnicy=[]
			for rec in db((db.pracownicy.id==db.granty_pracownicy.id_pracownik) & 
						  (db.granty_pracownicy.id_grant==record.id)).select(db.pracownicy.imie,db.pracownicy.nazwisko):
				session.uczestnicy.append(wez_imie_nazwisko(rec))
			
		session.pracownicy = []
		for rekord in db(db.pracownicy.id>1).select(db.pracownicy.imie, db.pracownicy.nazwisko):
			if wez_imie_nazwisko(rekord) not in session.uczestnicy:
				session.pracownicy.append(wez_imie_nazwisko(rekord))
		
		form_dodawaj = FORM(SELECT(session.pracownicy, _name='pracownik_dodawanie',), INPUT(_type='submit', _value="dodaj"))
		form_usuwaj = FORM(SELECT(session.uczestnicy, _name='pracownik_usuwanie',), INPUT(_type='submit', _value="usun"))
				
		form2 = ProfessorsSQLFORM(db.granty,record, showid=0, modyfikuj_formularz=[mod_form_walidator_a_mniejsze_b('rok_przyznania','rok_zakonczenia')])
		
		if form2.accepts(request.vars, session):
			# usun stare
			db(db.granty_pracownicy.id_grant==record.id).delete()
			for a in set(session.uczestnicy):
				s=a.split()
				pracownik=db(db.pracownicy.imie==s[0] and db.pracownicy.nazwisko==s[1]).select(db.pracownicy.id)
				if len(pracownik)>0:
					id=db.granty_pracownicy.insert(id_grant=form2.vars.id, id_pracownik=pracownik[0].id)
			del session.uczestnicy
			redirect(URL(a="instytut", c="home", f="komunikat", vars={'message': 'Dodano grant'}))
			
		#form=crud.update(db.granty,record,deletable=0,next=URL(a='instytut',c='home',f='komunikat', vars={'message': "Zmodyfikowano grant"}),modyfikuj_formularz=[mod_form_walidator_a_mniejsze_b('rok_przyznania','rok_zakonczenia')])
		#return dict(request.vars,form=form)
		return dict(request.vars,form_dodawaj=form_dodawaj,form_usuwaj=form_usuwaj,form=form2,lista_pracownikow=session.uczestnicy)
	else:
		return "<h1>Invalid url</h1>"
